package cn.ggy.config;


import com.alibaba.druid.pool.DruidDataSource;
import com.sun.org.apache.xalan.internal.xsltc.compiler.Template;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.core.JdbcTemplate;

/**
 * configuration就相当于是创建了一个applicationContext.xml包
 *
 * componentScan就像于是打开了注释扫描器
 *
 * propertySource就相当于是在配置文件中设置了数据库连接池
 */
@Configuration
@ComponentScan("cn.ggy")//默认扫描的这个包
@PropertySource("classpath:jdbc.properties")
public class MyConfig {

    @Value("${jdbc.driverClassName}")  //解析配置
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    //配置文件里面的每一个bean在配置类中都相当于是一个@bean注解

    @Bean          //如果不指定id,那id就默认为方法名
    public DruidDataSource druidDataSource(){

        //set注入
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driver);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);


        return druidDataSource;
    }

    @Bean         //其下的autowired可写可不写  两种方式无非就是想把上面的druidDataSource引到下面来
    public JdbcTemplate jdbcTemplate(){   //构造器注入
        JdbcTemplate jdbcTemplate = new JdbcTemplate(druidDataSource());

        return jdbcTemplate;
    }


}
